home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!zephyr.ens.tek.com!tekred!saab!billr
- From: billr@saab.CNA.TEK.COM (Bill Randle)
- Newsgroups: comp.sources.games
- Subject: v10i037: NetHack3 - display oriented dungeons & dragons (Ver. 3.0), Patch8s
- Message-ID: <5745@tekred.CNA.TEK.COM>
- Date: 5 Jun 90 18:01:48 GMT
- Sender: news@tekred.CNA.TEK.COM
- Lines: 817
- Approved: billr@saab.CNA.TEK.COM
-
- Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
- Posting-number: Volume 10, Issue 37
- Archive-name: NetHack3/Patch8s
- Patch-To: NetHack3: Volume 7, Issue 56-93
-
-
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 19 (of 24)."
- # Contents: Install.ovl mac/MD.proj.hqx others/exesmurf.c
- # Wrapped by billr@saab on Tue Jun 5 09:09:04 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'Install.ovl' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Install.ovl'\"
- else
- echo shar: Extracting \"'Install.ovl'\" \(14761 characters\)
- sed "s/^X//" >'Install.ovl' <<'END_OF_FILE'
- X Instructions for compiling and installing the Overlaid
- X NetHack 3.0 on an MS-DOS system
- X ======================================================
- X (or, How to make PC NetHack 3.0)
- X Last revision: June 02, 1990
- X
- X (Credit for a runnable full PC NetHack 3.0 goes to the overlay team of
- X Pierre Martineau, Stephen Spackman, Norm Meluch, and Kevin Smolkowski,
- X who built on the work of Steve Creps and Mike Threepoint.)
- X
- X
- XI. Dispelling the Myths:
- X
- X Compiling NetHack is not as easy as it sounds, nor as hard as it looks,
- X however it will behoove you to read this entire file through before
- X beginning the task.
- X
- X The NetHack executable that you are about to get will be generated by an
- X overlay linker. The beauty of this overlay linker beastie is that it will
- X create an executable that will function in much less memory than it would
- X "normally" take to run. Do not be deceived. The RAM requirement for the
- X overlay version is about 550k! You can load the program in less RAM, but
- X you will begin to experience a serious amount of disk thrashing at 530k
- X or less. Absolute minimum will probably be in the neighborhood of 380-400k.
- X You do not want to run the program like that! The more free RAM you have
- X available for the program, the more smoothly it will run.
- X
- X The magic piece to the overlay puzzle is a program called ovlmgr.asm. This
- X is a replacement for the Microsoft (and we use the term loosely) overlay
- X manager. This program has been enhanced since its release in November
- X 1989. It will now allow NetHack to use EMS memory if any is available,
- X therefore, RAM requirements can be reduced to the minimum with at least
- X 256K of EMS.
- X
- X As of patch level 7, version 3.0 has an added feature in the Makefile.
- X This feature enables a structured break-up of the object modules so that
- X we can link heavily used functions together without actual source code
- X movement. This has provided a great speed improvement for this release.
- X See the file others\maintain.ovl for more information on this structuring.
- X
- X
- XII. How long is this going to take?
- X
- X On an XT class PC it has been rumored that NetHack can be built in 8 - 10
- X hours.
- X On a 286 10MHz PC you can build NetHack in about 3 - 3.5 hours,
- X On the flip side if you have a 386 33MHz PC with a *VERRRRY* fast hard
- X disk, math coprocessor, 32 bit bus, and severe I/O caching you will have
- X NetHack in about 15 minutes!
- X
- X Hope you enjoy the game. We have worked very hard to try to bring it back
- X to the PC.
- X
- X
- XIII. Tools:
- X
- X The following programs are necessary to successfully compile the overlaid
- X version of NetHack:
- X
- X A. Microsoft C, version 5.1 or newer.
- X
- X B. The Microsoft Overlay Linker, version 3.6 or newer or preferably,
- X the Microsoft Segmented Linker, version 5.01.20 or newer. The
- X overlay linker has been known to cause problems with other
- X programs, but not with NetHack, yet.
- X One of these linkers should be included in your MSC version.
- X
- X C. NDmake, version 4.5 or newer, (available from your local ftp site).
- X As the overlay makefile is pretty large, you will want to use the
- X large model of NDmake: MAKE45L.EXE, as your make program.
- X MSC 6.0 has a new make program distributed with it that might be
- X able to handle the Makefile.ovl with a few modifications. This has
- X not been completely tested. We recommend NDmake 4.5.
- X
- X
- XIV. Optional tools:
- X
- X The following programs are not necessary, because pre-built copies of the
- X files are included in this distribution. However, if you want to build
- X NetHack 100% from scratch, you will need them.
- X
- X A. An 80x86 assembler.
- X This is for assembling the ovlmgr.asm file into ovlmgr.obj. If you
- X want to assemble your own copy of the overlay manager. The file
- X others\ovlmgr.uu is a uuencoded version of the assembled ovlmgr.asm.
- X For details, see the file ovlmgr.doc.
- X
- X B. Yacc/Bison & Lex/Flex workalike programs for the PC.
- X The source files for the special levels compiler are built using
- X bison and flex. Precompiled copies of the files lev_lex.c, and
- X lev_comp.c have been provided if you do not have these utilities.
- X Bison & flex should also be available at your local ftp site.
- X
- X
- XV. To compile your copy of NetHack on a MSDOS machine:
- X (or "just follow the "simple" steps outlined below.)
- X
- X1. It almost goes without saying that you should make sure that your tools
- X are set up and running correctly.
- X
- X2. Make sure all the NetHack files are in the appropriate directory
- X structure. You should have a main directory with subdirectories
- X src, include, auxil, others, amiga, mac, and vms. If you do not
- X follow this structure, the Makefile.ovl will not function properly.
- X
- X All the shared and UNIX-specific .c files and the source Makefile(.src)
- X belong in src; all the PC *.c files and PC make files belong in others;
- X all the .h files belong in include; other assorted files belong in auxil.
- X Check the file "Files" in your top level directory for an exact listing
- X of what file is in which directory.
- X
- X We will not need any of the files from the amiga, mac, and vms
- X directories, so you can delete them if you need the space.
- X
- X If you downloaded or ftp'd the sources from a UNIX system, the lines
- X will probably end in UNIX-style newlines, instead of the carriage
- X return and line feed pairs used by DOS. Some programs have trouble
- X with them, you may need to convert them (with a utility like
- X Rahul Dhesi's "flip"). Also, every file should end with an empty
- X line, because both Microsoft C and MASM have a habit of ignoring the
- X last line of each file.
- X
- X3. Move/Copy files from the others directory to your src directory
- X based on the following criteria. You will probably want to include
- X most all of these files.
- X
- X You will definitely need pc*.c, msdos.c, and trampoli.c.
- X
- X random.c is only needed if you want the high-quality random number
- X generation routines.
- X
- X You should be able to use either others/lev_lex.c (generated by flex)
- X or src/lev_lex.c (generated by lex), but the one in src is smaller.
- X If you have flex or some other lex work-alike, you can use that to
- X produce lev_lex.c from lev_comp.l.
- X
- X The file termcap.uu is the fixed version of the Fred Fish termcap library.
- X You will need to run a uudecode utility on it to generate the file
- X termcap.arc. termcap.arc contains several files of termcap routines.
- X Using them with NetHack involves very little knowledge of the UNIX concept
- X of a termcap database; mostly you need to know enough to set a TERM
- X environment variable. You can unarc termcap.arc here in the others
- X directory, but if you are going to use it, it is probably best to unarc a
- X copy in the src directory. That way you will not miss copying any
- X files over. Wherever you unarc it, get rid of the included makefile
- X since a better version has been provided as Makefile.lib.
- X
- X ovlmgr.uu (MS-DOS overlay manager) is the uuencoded assembled
- X object module for the overlay manager in case you do not have an assembler.
- X You will need to run a uudecode utility on this file too, to generate
- X ovlmgr.obj.
- X
- X Exesmurf.uu is the uuencoded copy of the exesmurf utility which displays
- X and modifies the contents of an executable file header. It is similar
- X to Microsoft's exemod utility but it provides infomation on overlays
- X which EXEMOD does not. It is used to modify the Nethack executable's
- X memory allocation.
- X
- X4. Rename the file Makefile.ovl to "Makefile." (no extension), and move
- X it into your src directory.
- X
- X The PC NetHack makefiles are set up for NDMAKE, a public domain
- X "make" utility. Both Microsoft's "make" leaves much to
- X be desired. It is worth the extra effort to get NDMAKE if you don't
- X already have it. Among other things, NDMAKE automatically generates
- X link response files when the link command involves so many objects
- X that the command would become longer than DOS can handle. If you must
- X use Microsoft's or Borland's "make", you'll need to edit the makefile
- X into a form your make can use, and add instructions to generate a link
- X response file.
- X
- X If you are going to be constructing the Fred Fish termlib you will need
- X the Makefile.lib. Copy this to your source directory too, and do not
- X change its name.
- X
- X Makefile.top in the top directory, Makefile.src in the src directory,
- X and Makefile.aux(il) in the auxil directory are for UNIX NetHack. You
- X will not need these, and you may delete them.
- X
- X Makefile.pc, Makefile.msc, and Makefile.tos are for compiling non-
- X overlaid versions of NetHack, and for the atari. You may delete these
- X too.
- X
- X4. Now go to the include subdirectory to edit a couple of the header files
- X there.
- X
- X First edit config.h according to the comments to match your system and
- X desired set of features. Mostly you need to check the WIZARD option,
- X make sure the HACKDIR is set properly, and check TERMLIB and COMPRESS.
- X
- X Using Microsoft C and overlays, we've managed to enable all the special
- X features. You may include all the neat features you want.
- X
- X Also check pcconf.h, which should not need much editing (if you are
- X including termcap.uu and random.c). If you are not including these, you
- X will need to comment out TERMLIB and/or RANDOM. You should make doubly
- X certain that OVERLAY is defined in pcconf.h, since otherwise things will
- X compile properly but very ugly things are likely to happen wherever
- X function pointers cross overlay boundaries - the linker is a little thick
- X about that.
- X
- X Commenting out the #define TERMLIB in pcconf.h to disable use of termcap
- X routines (relying on the ANSI_DEFAULT feature) will make your job a bit
- X easier. However, you can compile with both TERMLIB and ANSI_DEFAULT
- X and simply not set your TERM variable if you do not wish to use the
- X termcap file settings.
- X
- X6. If you want to change the high score list behavior, examine the top of
- X topten.c, in the src directory. You may want to change the definitions of
- X PERSMAX, POINTSMIN, and ENTRYMAX. I set POINTSMIN to 51 and ENTRYMAX to
- X 50 to keep the size of the score list down.
- X
- X7. Go to the src directory and edit the top of your Makefile. Be sure the
- X directory you want the game installed (GAMEDIR) in actually exists.
- X
- X If you elected not to use the high-quality BSD random number routines by
- X commenting out RANDOM in pcconf.h or tosconf.h, comment out (or set equal
- X to nothing) the RANDOM macro in your Makefile.
- X
- X If you elected to use Fred Fish's termcap library (bundled in as
- X termcap.arc), you will have to generate termlib.lib from those sources
- X by typing "make -f makefile.lib". You must also set the TERMLIB option
- X in Makefile.ovl to link in the resulting termlib.lib.
- X
- X If you have a MASM compatible Assembler, you may want to enable the option
- X in the makefile to rebuild ovlmgr.obj, although a ready-made object file
- X is provided for those of you without. Before assembling ovlmgr, be sure
- X to read ovlmgr.doc as there are several options that you may or may not
- X wish to enable/disable.
- X
- X If you are recompiling after patching your sources, or if you got your
- X files from somewhere other than the official distribution, "touch
- X makedefs.c" to ensure that certain files (onames.h and pm.h) are remade,
- X lest potentially troublesome timestamps fool "make".
- X
- X8. Now, enter "make45l install", and take a long siesta; your computer will
- X be occupied for a long time. If all goes well, you will get an executable.
- X
- X9. Make sure the support files -- data, rumors, cmdhelp, opthelp, help, hh,
- X history, license, and oracles (if ORACLE was #define'd) -- were copied
- X to the game directory. If not, move them there from the auxil directory
- X yourself. rumors can be created manually by entering "makedefs -r",
- X data by entering "makedefs -d".
- X
- X If you compiled in the special levels (if STRONGHOLD was #define'd), make
- X sure castle, tower?, and possibly endgame are there, too. They can be
- X created manually by entering "lev_comp filename.des", where filename.des
- X is the appropriate description file (found in the auxil directory).
- X
- X Make sure the files NetHack.cnf and termcap also made it to your game
- X directory. If not go to the others directory and copy NetHack.cnf and
- X termcap to your game directory. Edit NetHack.cnf to reflect your
- X particular setup and personal preferences, by following the comments.
- X
- X If you'll be running NetHack from a different subdirectory, you will
- X want to "set HACKDIR=c:\games\nethack" (or whatever drive and directory
- X you want to use) now. Add it to your autoexec.bat (in DOS), if you'll
- X be playing often.
- X
- X11. Play NetHack. If it works, you're done!
- X
- X
- XNotes
- X-----
- X1) First and foremost: We have been developing with MSC 5.1 as a compiler
- X and NDmake 4.5 as a make. NDmake is readily available on the Usenet;
- X obtaining MSC might be more of a problem. MSC 5.0 is broken. You *will
- X not* be able to compile the overlay version with that compiler due to
- X problems with the /Gt option allowing the CONST segment to become
- X > 64k when linking.
- X MSC 6.0 and its make utility have been used to generate an overlaid
- X NetHack.exe, however sufficient testing has not been completed at this
- X time for us to "recommend" its use.
- X
- X2) Save files and bones files from previous versions will not work with
- X NetHack 3.0. Don't bother trying to keep them. Record (score) files
- X from before 3.0 patchlevel 7 will almost work, but you need to make one
- X change manually to them: At the end of each line is a word or phrase
- X specifying what killed the player. Change the string to start with the
- X words "killed by", "killed by a", or "killed by an" (whichever is
- X appropriate). If the death was petrification, it should read "petrified
- X by" instead of "killed by". Don't change "starvation", "quit", "escaped",
- X or "ascended".
- X
- X3) To install an update of NetHack after changing something, enter "make"
- X from the src directory. If you add, delete, or reorder monsters or
- X objects, or you change the format of saved level files, delete any save
- X and bones files. (Trying to use such files sometimes produces amusing
- X confusions on the game's part, but usually crashes.)
- X
- X4) During linking the Microsoft Overlay Linker will need temporary storage
- X space. Make sure you have about a meg of free disk wherever you have
- X defined your temporary storage.
- END_OF_FILE
- if test 14761 -ne `wc -c <'Install.ovl'`; then
- echo shar: \"'Install.ovl'\" unpacked with wrong size!
- fi
- # end of 'Install.ovl'
- fi
- if test -f 'mac/MD.proj.hqx' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'mac/MD.proj.hqx'\"
- else
- echo shar: Extracting \"'mac/MD.proj.hqx'\" \(17003 characters\)
- sed "s/^X//" >'mac/MD.proj.hqx' <<'END_OF_FILE'
- X(This file must be converted with BinHex 4.0)
- X
- X:$@eKDf9NC@Cc,R"bEfS!8&*25NY"5%`!N!JhP#4S!*!%!3#3!cAk!!!dqJ!!!CS
- X!!""G$80bD@0VCA3J4h*KF'J#!*!$39"36%0(8NBK"!eYB@YPC'9QFbj`FQpU!J#
- X3!e"56dT,38K-!3#3"&J!!&"56dT,38K-!3#3"&J!!%e9!*!0!U)XCN!!N!BhP!#
- X3#K8!N!-3A3pQD@jN)%e')'CKBh4[FR-#!*!$39"36%eZ4Q3K"!!+!#`!N!3L#J#
- X3$PN8!!"F!+(@VNLKeUj2SGH0eJ#3(Jc-!!%0KJ!@!*!'!r!!N2m!N2m!N2m!N2,
- XF!!!"@!!!F!8!!%459P)"8!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+h
- XX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#
- Xf!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!
- X`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m
- X`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!8
- X3#'eKDf9NC@CcYJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!
- X!rc!!YJ#3"4""8&"-EQK04!J!!B!!N!-+#!!!"J#3!`B!N!9J!*!$F!#3"e!!N!-
- XJ!"`r2!!"UI!%#Mmm!!'Tm!3H2c`!!DR`"$)r2!!"UI!%6Mmm!!'Tm!5%2c`!!DR
- X`"+3r2!!"UI!%aMmm!!'Tm!6Q2c`!!DR`"air2!!"UI!!N!-%!*!("!#30!&B!!"
- X`"3!!4&*@8J&3!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B
- X!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#
- XYl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!
- X!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!
- X!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$
- Xr-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!
- X&%%&38%aYDf3U!!!"J!#3!`J!!2m`!,B!N!d+!*!-*!!!-iUS!$0Qk!!cCi`!!!+
- X)!*!&-J#3&N#!lNi!-fES3!!!d!!cCV3!N!8cC[!!-fEd!$0Qq!!cC[`!-fF!!$0
- XR"!!cC`J!-fF-!$0R%!!cCa3!-fFB!$0R(!!cCb!!-fFN!$0R+!!cCb`!-fF`!$0
- XR0!!cCcJ!-fFm!$0R3!!cCd3!-fG)!$0R6!!cCe!!-fG8!$0R@!!cCe`!-fGJ!$0
- XRC!!cCfJ!-fGX!$0RF!!cCh3!-fGi!$0RI!!cCi!!-fH%!$0RL!!cL!!!-i-N!$0
- Xq5!!cIK3!-hhN!$0pY!!cH0J!-h0S!$0YC!!cCm#!!!@N!!!"!!)!#3N!!3!!rj!
- X)SL3#2!!D!!%!!#R968&,43!+E@&VC@4PCR-ZB`#3!`'JR-eYS*c0ED#Fc@d!'J!
- X#!!!RrNe"3dJ"#NeKBdKPB@4PFR-!N!-"SLaT$U)XD3kL,'N1!"J!!3!!+GC$6dj
- X'!!KMEfjQD@FZD!"c!!+L(KlhSKiHpk)H([F!'J!"!!!TeP45383!#R4bB@4cG'4
- XM,QJ!N!-#SKiG4D)H(8@L(Ke&!"J!!3!!+GC(6%p#!!KRE'pLB@`ZD!"S!!1Jar@
- XhS-IeYk$(pEF!&J!#!!!SB&084%N""h0dC'P[,QJ!!!1L(K[jSKiEqD)H'rN!&J!
- X"!!!TeN026e)!"f0[Eh*N,QJ!!!1L*`[LSLF,iU)R#q)!'!!"!!!TeNe"3d-!#@e
- XKBf0[EQBZD!!!"+)H(JDL(Ki'SKiH"J!@!!%!!#R@690%6`!(EA0NEh-ZD!!!"+)
- XH(Y1L(Kl6SKiHd`!B!!%!!#R@8eP69!!)FhPcG'9Y,QJ!N!-%S*cGjD#FhH@JR0h
- XP!"B!!J!!+'"858e&!3CdD@eP,QJ!D!!%S*cG0k#Fh6HJR0dh!"B!!J!!+'"'3dj
- X8!3G'BfjdE#jS!!!%S*cGV+#FhDbJR0fX!"J!!J!!+'"69%4%!3K6G'4NC@BZD!#
- X3!`5JR0h9S*cGeD#FhG8!'!!#!!!SB&084%`"#&0dC'aTBLjS!*!$"+$(p0QJar6
- XCS-Idf3!B!!)!!#KJ8e4553%)8h4bD@jR,QJ!N!-%S*c03k#Fc81JR-e$!"J!!J!
- X!+!03390$!3K`BA0MB@`ZD!#3!`5JR-BRS*c'*k#FaLF!'J!#!!!S!e&958-"#e&
- XeD@0VC(*KGbjS!!!%S*c&jU#FaHDJR-AQ!"J!!J!!+!0'6dj8!3P'Efjd6@Gb,QJ
- X!!!5JR-A9S*c&eD#FaG8!'J!#!!!S!d9@48i"#N9fC@jd6@Gb,QJ!N!-%S*c'Hk#
- XFaRZJR-Cl!"S!!J!!+!0A58j%!3YAD@jNEhG0Ch)ZD!!!"+#FaJ5JR-B%S*c'"!!
- XB!!)!!#J$689193%*6@9ZG8eRFLjS!!!%S*c'Ak#FaPqJR-CI!"`!!J!!+!069%4
- X'!3a6G'4'D@aP8'YR,QJ!E`!%S*c'2k#FaMqJR-Br!"`!!J!!+!0648G0!3a6C@G
- XYC@jd6'4b,QJ!E`!%S*c'ED#FaQfJR-CY!"`!!J!!+!086dp-!3e8EfpXBQpi9A4
- XTE#jS!!!%S*c'$U#FaJkJR-B1!"J!!J!!+!028e98!3K28e9dD@`ZD!"T!!5JR-A
- X$S*c&`k#FaF-!'J!#!!!S!d4*38`"#d4TB@a[CdeRFLjS!!!%S*c&fU#FaGUJR-A
- XD!"J!!J!!+!0'58a&!3P'D@aP6@Gb,QJ!!!5JR-AXS*c&l+#FaH`!&!!#!!!S!dK
- X'8bi""8K'8bjS!!!%S,%p&D#a24@JX6d9!"B!!J!!+!0$6da2!3G$Efa[FLjS!!!
- X%S*c'+k#FaLZJR-BV!"`!!J!!+!054902!3e5CA0[GA*MC8eRFLjS!!!%SLQSeU)
- XTU0DL+DM@!"J!!3!!+GC&@&4&!!KPH(4PFQiZD!"R!!5L(KZDSKiEQU)H'jS!'J!
- X"!!!TeNe"3d%!#NeKBd&XCA*d,QJ!,J!"SKiHBD)H(Q'L(KjK!"S!!3!!+GC349*
- X0!!T`CA*YEfjcG#jS!#i!!U)H(DUL(KfUSKiGUJ!B!!%!!#R@68p133!*E@pZBA4
- XdDbjS!!!#SKiGiU)H(H+L(KhL!"J!!3!!+GC06dj'!!PYEfjQE'&R,QJ!!!'L(Ki
- XZSKiH,U)H(Li!'J!"!!!TeNp#5N-!#QpLDQ0XBA0c,QJ!,J!"S*c&Sk#FaD1JR-@
- XM!"`!!J!!+!0$6dj8!!a$EfjdFQpX6@Gb,QJ!!)!!"J3!N!2m!J!*#3!"!!$rN!L
- XL(MID!"B!!3!!+G906dj6!!GYEfjcG#jM!!!"S*c0ED#Fc@fJR-eY!"S!!J!!*rj
- X0380)!3T0B@0)C@&NCA*c!#i!!D)XD3kL,'N1SLaT$J!B!!%!!#R@3dp14J!)Bfp
- XZCQPR,QJ!F`!#SKiHpk)H([HL(Klh!"S!!3!!+GC88N&%!!TdFQ&NFh4NBbjS!#i
- X!!U)H(8@L(Ke&SKiG43!B!!%!!#R@4da23J!)Cfa[BQ&X,QJ!D!!$S-IeYk$(pEH
- XJar@h!"B!!J!!+'"69%4*!3GcG'4TEbjS!!!$SKiEqD)H'rQL(K[j!"B!!3!!+GC
- X$6dp5!!GMEfpbC#jS!!!$SLF,iU)R#q+L*`[L!"J!!3!!+GC0380$!!PYB@0MEfj
- XQ,QJ!!!5L(Ki'SKiH"U)H(JB!&J!"!!!TeNe64%m!"fecC'pc,QJ!!!5L(Kl6SKi
- XHdk)H(Y-!'!!"!!!TeP0C8e3!#(0jFh4PE5jS!*!$"+#FhH@JR0hPS*cGj3!@!!)
- X!!#KJ9%P043%'G'PYC5jS!'J!"+#Fh6HJR0dhS*cG0`!@!!)!!#KJ4N019!%(4Q0
- XZG'`ZD!!!"+#FhDbJR0fXS*cGV!!B!!)!!#KJ8e4%4!%)8h4NC'9Q,QJ!N!-%S*c
- XGeD#FhG@JR0h9!"J!!J!!+'"69%4-!3K6G'4XD@)ZD!#3!`5Jar6CS-IdfD$(p0N
- X!'!!#!!!SB&088NN"#&0dFQPZCbjS!*!$"+#Fc81JR-e$S*c03`!B!!)!!#J$8%&
- X63`%)F'&cBf&X,QJ!N!-%S*c'*k#FaLHJR-BR!"S!!J!!+!0498P$!3Y4G@PMDf4
- XbBAFZD!!!"+#FaHDJR-AQS*c&jJ!B!!)!!#J$4Np19!%*4QpZG%eRFLjS!!!%S*c
- X&eD#FaG@JR-A9!"S!!J!!+!0&9N91!3T&GQ9ZG%eRFLjS!*!$"+#FaRZJR-ClS*c
- X'H`!D!!)!!#J$9dP14!%,9fPZC'ph6@Gb,QJ!!!5JR-B%S*c'"+#FaJ3!'!!#!!!
- XS!de&6P8"#8ePER90Ch)ZD!!!"+#FaPqJR-CIS*c'A`!F!!)!!#J$8e4%4J%-8h4
- XN4QPXC9"VCbjS!*!$"+#FaMqJR-BrS*c'2`!F!!)!!#J$8d9(63%-8f9RE@9ZG%a
- XNFLjS!*!$"+#FaQfJR-CYS*c'E3!F!!)!!#J$9%p26!%09'p[E'*[H&9dD@`ZD!!
- X!"+#FaJkJR-B1S*c'$J!B!!)!!#J$6e099!%)6e09G'PX,QJ!D3!%S*c&`k#FaF1
- XJR-A$!"S!!J!!+!0%58&-!3Y%D@&XEfG0Ch)ZD!!!"+#FaGUJR-ADS*c&fJ!B!!)
- X!!#J$4NP-43%*4QPXC8eRFLjS!!!%S*c&l+#FaHbJR-AX!"3!!J!!+!0)4P-Z!39
- X)4P-ZD!!!"+#a24@JX6d9S,%p&3!@!!)!!#J$3dp-6`%(3fpXEh)ZD!!!"+#FaLZ
- XJR-BVS*c'+`!F!!)!!#J$8N966`%08Q9cEh9bBf90Ch)ZD!!!"+)TU0DL+DM@SLQ
- XSeJ!B!!%!!#R@49K843!)CAKdCA*Z,QJ!C`!%SKiEQU)H'jUL(KZD!"S!!3!!+GC
- X0380"!!T0B@0"E'9bG#jS!#i!!D)H(Q'L(KjKSKiHB3!D!!%!!#R@8%9563!+F'9
- XbE@pZFh3ZD!!Z!!+L(KfUSKiGUU)H(DS!'!!"!!!TeNe26N%!#@e[EQ&dG'XZD!!
- X!!U)H(H+L(KhLSKiGiJ!B!!%!!#R@68p14J!*E@pZCQaKCbjS!!!"SKiH!D)H(J'
- XL(Ki"!"J!!3!!+GC06dj6!!KYEfjcH@dZD!#3!`'L(K`hSKiF0k)H($F!&J!"!!!
- XTeN965%X!"Q9cD'XZD!"S!!'L(Kp&SKiI4D)H(d8!&J!"!!!TePC"98`!"hCKG@a
- Xd,QJ!!!'L(K``SKiF-+)H($!!&J!"!!!TeN938NN!"Q9`FQNZD!#3!`'L(K[$SKi
- XE`k)H'm-!&J!"!!!TeN026%m!"f0[E'pb,QJ!JJ!&F!#3!rJ#!!N*!!%!!2q3#+)
- XN!Zd!'!!"!!!Te8p#5N8!#@pLDQ9MG(-ZB`!!!D#Fc@fJR-eYS*c0E3!D!!)!!#I
- Xq68&$5!%+6@&M5'9KC'9bF`!Z!!'L,'N1SLaT$U)XD3i!'!!"!!!TeN026NB!#'0
- X[EQCTCbjS!(-!!U)H([HL(KlhSKiHp`!D!!%!!#R@9&*"4!!+G(*KC(0dC'-ZD!!
- XZ!!+L(Ke&SKiG4D)H(88!'!!"!!!TeNG-6d)!#'GXEf*KE#jS!'J!!k$(pEHJar@
- XhS-IeY`!@!!)!!#KJ8e4%53%(Fh4ND@mZD!!!!k)H'rQL(K[jSKiEq3!@!!%!!#R
- X@3dp28J!(Bfp[FQ3ZD!!!!k)R#q+L*`[LSLF,iJ!B!!%!!#R@68&$3`!*E@&MBfp
- XZCLjS!!!%SKiH"U)H(JDL(Ki'!"B!!3!!+GC08d42!!GYFf4[FbjS!!!%SKiHdk)
- XH(Y1L(Kl6!"J!!3!!+GC6@908!!KcHA0dC@dZD!#3!`5JR0hPS*cGjD#FhH8!&J!
- X#!!!SB&4*688""R4TE@8ZD!"S!!5JR0dhS*cG0k#Fh6F!&J!#!!!SB%C$6P3""dC
- XMER4X,QJ!!!5JR0fXS*cGV+#FhD`!'!!#!!!SB&084%3"#&0dC'4PCLjS!*!$"+#
- XFhG@JR0h9S*cGe3!B!!)!!#KJ8e4%6!%)8h4NE'PL,QJ!N!-%S-IdfD$(p0QJar6
- XC!"J!!J!!+'"69&**!3K6G(*TEQFZD!#3!`5JR-e$S*c03k#Fc8-!'!!#!!!S!e"
- X"8d-"#("KFf0KE#jS!*!$"+#FaLHJR-BRS*c'*`!D!!)!!#J$899*3`%,8A9TBfY
- XNFQ&h,QJ!!!5JR-AQS*c&jU#FaHB!'!!#!!!S!dC26P3"#8C[ER40Ch)ZD!!!"+#
- XFaG@JR-A9S*c&e3!D!!)!!#J$49C&6J%+4ACPER40Ch)ZD!#3!`5JR-ClS*c'Hk#
- XFaRX!'J!#!!!S!eG*6N3"#eGTEQ4[GdeRFLjS!!!%S*c'"+#FaJ5JR-B%!"J!!J!
- X!+!0048j9!3P0C@je6@Gb,QJ!!!5JR-CIS*c'Ak#FaPm!(!!#!!!S!e084%B"$&0
- XdC%CTE'93DfFZD!#3!`5JR-BrS*c'2k#FaMm!(!!#!!!S!e0&4dd"$&0PCfePER4
- X-C()ZD!#3!`5JR-CYS*c'ED#FaQd!(!!#!!!S!e426d`"$94[EfaLEhK9G'PX,QJ
- X!!!5JR-B1S*c'$U#FaJi!'!!#!!!S!dp6993"#%p69A4TE#jS!'N!"+#FaF1JR-A
- X$S*c&``!D!!)!!#J$4%P"6!%,4'PKE'pR6@Gb,QJ!!!5JR-ADS*c&fU#FaGS!'!!
- X#!!!S!dC*6%8"#8CTE'90Ch)ZD!!!"+#FaHbJR-AXS*c&l!!8!!)!!#J$5%C6,J%
- X&5%C6,QJ!!!5JX6d9S,%p&D#a248!&J!#!!!S!d026%m""d0[E'pb,QJ!!!5JR-B
- XVS*c'+k#FaLX!(!!#!!!S!e*&8dm"$9*PFfpeFQ0P6@Gb,QJ!!!5L+DM@SLQSeU)
- XTU0B!'!!"!!!TeN9B9%8!#'9iG'9bELjS!'F!"+)H'jUL(KZDSKiEQJ!D!!%!!#R
- X@68&$33!+6@&M3@aPFR3ZD!!Z!!'L(KiESKiH'k)H(KX!&!!"!!!TeNp#5Li!"@p
- XLDLjS!!!"SKiH,U)H(LkL(KiZ!"S!!3!!+GC23NT$!!T[BQTME'&cFbjS!#i!!D)
- XH(QQL(KjTSKiHD3!@!!%!!#R@8&*28!!'F(*[F#jS!(-!!D)H'm1L(K[$SKiE``!
- X@!!%!!#R@3dp-6`!(BfpXEh)ZD!!!!B)!"0`!N!2d!J!*#3!"!!$rN!LL(MXi!"B
- X!!3!!+G9338j*!!G`B@jTBbjM!!!"S*c0ED#Fc@fJR-eY!"S!!J!!*rj0380)!3T
- X0B@0)C@&NCA*c!#i!!D)XD3kL,'N1SLaT$J!B!!%!!#R@3dp14J!)BfpZCQPR,QJ
- X!F`!#SKiHpk)H([HL(Klh!"S!!3!!+GC88N&%!!TdFQ&NFh4NBbjS!#i!!U)H(8@
- XL(Ke&SKiG43!B!!%!!#R@4da23J!)Cfa[BQ&X,QJ!D!!$S-IeYk$(pEHJar@h!"B
- X!!J!!+'"69%4*!3GcG'4TEbjS!!!$SKiEqD)H'rQL(K[j!"B!!3!!+GC$6dp5!!G
- XMEfpbC#jS!!!$SLF,iU)R#q+L*`[L!"J!!3!!+GC0380$!!PYB@0MEfjQ,QJ!!!5
- XL(Ki'SKiH"U)H(JB!&J!"!!!TeNe64%m!"fecC'pc,QJ!!!5L(Kl6SKiHdk)H(Y-
- X!'!!"!!!TeP0C8e3!#(0jFh4PE5jS!*!$"+#FhH@JR0hPS*cGj3!@!!)!!#KJ9%P
- X043%'G'PYC5jS!'J!"+#Fh6HJR0dhS*cG0`!@!!)!!#KJ4N019!%(4Q0ZG'`ZD!!
- X!"+#FhDbJR0fXS*cGV!!B!!)!!#KJ8e4%4!%)8h4NC'9Q,QJ!N!-%S*cGeD#FhG@
- XJR0h9!"J!!J!!+'"69%4-!3K6G'4XD@)ZD!#3!`5Jar6CS-IdfD$(p0N!'!!#!!!
- XSB&088NN"#&0dFQPZCbjS!*!$"+#Fc81JR-e$S*c03`!B!!)!!#J$8%&63`%)F'&
- XcBf&X,QJ!N!-%S*c'*k#FaLHJR-BR!"S!!J!!+!0498P$!3Y4G@PMDf4bBAFZD!!
- X!"+#FaHDJR-AQS*c&jJ!B!!)!!#J$4Np19!%*4QpZG%eRFLjS!!!%S*c&eD#FaG@
- XJR-A9!"S!!J!!+!0&9N91!3T&GQ9ZG%eRFLjS!*!$"+#FaRZJR-ClS*c'H`!D!!)
- X!!#J$9dP14!%,9fPZC'ph6@Gb,QJ!!!5JR-B%S*c'"+#FaJ3!'!!#!!!S!de&6P8
- X"#8ePER90Ch)ZD!!!"+#FaPqJR-CIS*c'A`!F!!)!!#J$8e4%4J%-8h4N4QPXC9"
- XVCbjS!*!$"+#FaMqJR-BrS*c'2`!F!!)!!#J$8d9(63%-8f9RE@9ZG%aNFLjS!*!
- X$"+#FaQfJR-CYS*c'E3!F!!)!!#J$9%p26!%09'p[E'*[H&9dD@`ZD!!!"+#FaJk
- XJR-B1S*c'$J!B!!)!!#J$6e099!%)6e09G'PX,QJ!D3!%S*c&`k#FaF1JR-A$!"S
- X!!J!!+!0%58&-!3Y%D@&XEfG0Ch)ZD!!!"+#FaGUJR-ADS*c&fJ!B!!)!!#J$4NP
- X-43%*4QPXC8eRFLjS!!!%S*c&l+#FaHbJR-AX!"3!!J!!+!0)4P-Z!39)4P-ZD!!
- X!"+#a24@JX6d9S,%p&3!@!!)!!#J$3dp-6`%(3fpXEh)ZD!!!"+#FaLZJR-BVS*c
- X'+`!F!!)!!#J$8N966`%08Q9cEh9bBf90Ch)ZD!!!"+)TU0DL+DM@SLQSeJ!B!!%
- X!!#R@49K843!)CAKdCA*Z,QJ!C`!%SKiEQU)H'jUL(KZD!"S!!3!!+GC0380"!!T
- X0B@0"E'9bG#jS!#jMD)!!!$!!N!2`!!!*#3!"!!$rN!LJb!28!"3!!J!!+&P"6P0
- X*!!4"6P0*!#k!!!!`!*!$l!!!#3N!!3!!rj!)S-J0[!!8!!)!!#KC98j*@!!%G@j
- XTH!!ZJ!!!0!#3!qJ!!!N*!!%!!2q3#+#Z`J)!'!!#!!!S"8e"3e3!#%eKBe4bBA"
- Xc!!##!!6F!*!$j!)!#3N!!3!!rj!)SKiPl`!@!!%!!#R938a-6`!(B@aXEf-ZB`!
- X!!D#Fc@fJR-eYS*c0E3!D!!)!!#Iq68&$5!%+6@&M5'9KC'9bF`!Z!!'L,'N1SLa
- XT$U)XD3i!'!!"!!!TeN026NB!#'0[EQCTCbjS!(-!!U)H([HL(KlhSKiHp`!D!!%
- X!!#R@9&*"4!!+G(*KC(0dC'-ZD!!Z!!+L(Ke&SKiG4D)H(88!'!!"!!!TeNG-6d)
- X!#'GXEf*KE#jS!'J!!k$(pEHJar@hS-IeY`!@!!)!!#KJ8e4%53%(Fh4ND@mZD!!
- X!!k)H'rQL(K[jSKiEq3!@!!%!!#R@3dp28J!(Bfp[FQ3ZD!!!!k)R#q+L*`[LSLF
- X,iJ!B!!%!!#R@68&$3`!*E@&MBfpZCLjS!!!%SKiH"U)H(JDL(Ki'!"B!!3!!+GC
- X08d42!!GYFf4[FbjS!!!%SKiHdk)H(Y1L(Kl6!"J!!3!!+GC6@908!!KcHA0dC@d
- XZD!#3!`5JR0hPS*cGjD#FhH8!&J!#!!!SB&4*688""R4TE@8ZD!"S!!5JR0dhS*c
- XG0k#Fh6F!&J!#!!!SB%C$6P3""dCMER4X,QJ!!!5JR0fXS*cGV+#FhD`!'!!#!!!
- XSB&084%3"#&0dC'4PCLjS!*!$"+#FhG@JR0h9S*cGe3!B!!)!!#KJ8e4%6!%)8h4
- XNE'PL,QJ!N!-%S-IdfD$(p0QJar6C!"J!!J!!+'"69&**!3K6G(*TEQFZD!#3!`5
- XJR-e$S*c03k#Fc8-!'!!#!!!S!e""8d-"#("KFf0KE#jS!*!$"+#FaLHJR-BRS*c
- X'*`!D!!)!!#J$899*3`%,8A9TBfYNFQ&h,QJ!!!5JR-AQS*c&jU#FaHB!'!!#!!!
- XS!dC26P3"#8C[ER40Ch)ZD!!!"+#FaG@JR-A9S*c&e3!D!!)!!#J$49C&6J%+4AC
- XPER40Ch)ZD!#3!`5JR-ClS*c'Hk#FaRX!'J!#!!!S!eG*6N3"#eGTEQ4[GdeRFLj
- XS!!!%S*c'"+#FaJ5JR-B%!"J!!J!!+!0048j9!3P0C@je6@Gb,QJ!!!5JR-CIS*c
- X'Ak#FaPm!(!!#!!!S!e084%B"$&0dC%CTE'93DfFZD!#3!`5JR-BrS*c'2k#FaMm
- X!(!!#!!!S!e0&4dd"$&0PCfePER4-C()ZD!#3!`5JR-CYS*c'ED#FaQd!(!!#!!!
- XS!e426d`"$94[EfaLEhK9G'PX,QJ!!!5JR-B1S*c'$U#FaJi!'!!#!!!S!dp6993
- X"#%p69A4TE#jS!'N!"+#FaF1JR-A$S*c&``!D!!)!!#J$4%P"6!%,4'PKE'pR6@G
- Xb,QJ!!!5JR-ADS*c&fU#FaGS!'!!#!!!S!dC*6%8"#8CTE'90Ch)ZD!!!"+#FaHb
- XJR-AXS*c&l!!8!!)!!#J$5%C6,J%&5%C6,QJ!!!5JX6d9S,%p&D#a248!&J!#!!!
- XS!d026%m""d0[E'pb,QJ!!!5JR-BVS*c'+k#FaLX!(!!#!!!S!e*&8dm"$9*PFfp
- XeFQ0P6@Gb,QJ!!!5L+DM@SLQSeU)TU0B!'!!"!!!TeN9B9%8!#'9iG'9bELjS!'F
- X!"+)H'jUL(KZDSKiEQJ!D!!%!!#R@68&$33!+6@&M3@aPFR3ZD!!ZS*b!!!6F!*!
- X$i!)!#3N!!3!!rj!)SKj,$3!B!!%!!#R968&$4J!*E@&MCQPXC5jM!!!"S*c0ED#
- XFc@fJR-eY!"S!!J!!*rj0380)!3T0B@0)C@&NCA*c!#i!!D)XD3kL,'N1SLaT$J!
- XB!!%!!#R@3dp14J!)BfpZCQPR,QJ!F`!#SKiHpk)H([HL(Klh!"S!!3!!+GC88N&
- X%!!TdFQ&NFh4NBbjS!#i!!U)H(8@L(Ke&SKiG43!B!!%!!#R@4da23J!)Cfa[BQ&
- XX,QJ!D!!$S-IeYk$(pEHJar@h!"B!!J!!+'"69%4*!3GcG'4TEbjS!!!$SKiEqD)
- XH'rQL(K[j!"B!!3!!+GC$6dp5!!GMEfpbC#jS!!!$SLF,iU)R#q+L*`[L!"J!!3!
- X!+GC0380$!!PYB@0MEfjQ,QJ!!!5L(Ki'SKiH"U)H(JB!&J!"!!!TeNe64%m!"fe
- XcC'pc,QJ!!!5L(Kl6SKiHdk)H(Y-!'!!"!!!TeP0C8e3!#(0jFh4PE5jS!*!$"+#
- XFhH@JR0hPS*cGj3!@!!)!!#KJ9%P043%'G'PYC5jS!'J!"+#Fh6HJR0dhS*cG0`!
- X@!!)!!#KJ4N019!%(4Q0ZG'`ZD!!!"+#FhDbJR0fXS*cGV!!B!!)!!#KJ8e4%4!%
- X)8h4NC'9Q,QJ!N!-%S*cGeD#FhG@JR0h9!"J!!J!!+'"69%4-!3K6G'4XD@)ZD!#
- X3!`5Jar6CS-IdfD$(p0N!'!!#!!!SB&088NN"#&0dFQPZCbjS!*!$"+#Fc81JR-e
- X$S*c03`!B!!)!!#J$8%&63`%)F'&cBf&X,QJ!N!-%S*c'*k#FaLHJR-BR!"S!!J!
- X!+!0498P$!3Y4G@PMDf4bBAFZD!!!"+#FaHDJR-AQS*c&jJ!B!!)!!#J$4Np19!%
- X*4QpZG%eRFLjS!!!%S*c&eD#FaG@JR-A9!"S!!J!!+!0&9N91!3T&GQ9ZG%eRFLj
- XS!*!$"+#FaRZJR-ClS*c'H`!D!!)!!#J$9dP14!%,9fPZC'ph6@Gb,QJ!!!5JR-B
- X%S*c'"+#FaJ3!'!!#!!!S!de&6P8"#8ePER90Ch)ZD!!!"+#FaPqJR-CIS*c'A`!
- XF!!)!!#J$8e4%4J%-8h4N4QPXC9"VCbjS!*!$"+#FaMqJR-BrS*c'2`!F!!)!!#J
- X$8d9(63%-8f9RE@9ZG%aNFLjS!*!$"+#FaQfJR-CYS*c'E3!F!!)!!#J$9%p26!%
- X09'p[E'*[H&9dD@`ZD!!!"+#FaJkJR-B1S*c'$J!B!!)!!#J$6e099!%)6e09G'P
- XX,QJ!D3!%S*c&`k#FaF1JR-A$!"S!!J!!+!0%58&-!3Y%D@&XEfG0Ch)ZD!!!"+#
- XFaGUJR-ADS*c&fJ!B!!)!!#J$4NP-43%*4QPXC8eRFLjS!!!%S*c&l+#FaHbJR-A
- XX!"3!!J!!+!0)4P-Z!39)4P-ZD!!!"+#a24@JX6d9S,%p&3!@!!)!!#J$3dp-6`%
- X(3fpXEh)ZD!!!"+#FaLZJR-BVS*c'+`!F!!)!!#J$8N966`%08Q9cEh9bBf90Ch)
- XZD!!!"+)TU0DL+DM@SLQSeJ!B!!%!!#R@49K843!)CAKdCA*Z,QJ!C`!%SKiEQU)
- XH'jUL(KZD!"S!!3!!+GC0380"!!T0B@0"E'9bG#jS!#k!!!!S!*!$h!#3#8B!!3#
- X3"4S!N!-"!!J%E@&TEL#3!`!!!SJ!"+#FaMqJR-BrS*c'2`!F!!)!!#J$8d9(63%
- X-8f9RE@9ZG%aNFLjS!*!$"+#FaQfJR-CYS*c'E3!F!!)!!#J$9%p26!%09'p[E'*
- X[H&9dD@`ZD!!!"+#FaJkJR-B1S*c'$J!B!!)!!#J$6e099!%)6e09G'PX,QJ!D3!
- X%S*c&`k#FaF1JR-A$!"S!!J!!+!0%58&-!3Y%D@&XEfG0Ch)ZD!!!"+#FaGUJR-A
- XDS*c&fJ!B!!)!!#J$4NP-43%*4QPXC8eRFLjS!!!%S*c&l+#FaHbJR-AX!"3!!J!
- X!+!0)4P-Z!39)4P-ZD!!!"+#a24@JX6d9S,%p&3!@!!)!!#J$3dp-6`%(3fpXEh)
- XZD!!!"+#FaLZJR-BVS*c'+`!F!!)!!#J$8N966`%08Q9cEh9bBf90Ch)ZD!!!"+)
- XTU0DL+DM@SLQSeJ!B!!%!!#R@49K843!)CAKdCA*Z,QJ!C`!%SKiEQU)H'jUL(KZ
- XD!"S!!3!!+GC0380"!!T0B@0"E'9bG#jS!#jMD)!!!$!!N!2`!!!*#3!"!!$rN!L
- XJb!28!"3!!J!!+&P"6P0*!!4"6P0*!#k!!!!`!*!$l!!!#3N!!3!!rj!)S-J0[!!
- X8!!)!!#KC98j*@!!%G@jTH!!ZJ!!!0!#3!qJ!!!N*!!%!!2q3#+#Z`J)!'!!#!!!
- XS"8e"3e3!#%eKBe4bBA"c!*!&D!#3!``+6%aKFh4$E'PMDb#!!!!S!!!'D!!!"Q`
- X!"J!!!QJ!!3!'!!!,+J!"!*!$#!C-3faTBfXJJ!!!,!!!"Q3!N!8'!!!"L!!"!!B
- X!!!UU!!%!N!--#%a6CA4$C@aX)*!$!*!$$!!!"Q!!!!CN!!!#3!!!!3#3"'!!N"-
- X%!*!H5-!"!`!(!*!$r!#3!f!!N"-%!*!H5-!"!`!)!*!$q!#3!f!!N"-%!*!J!3-
- X!"J#3!r3!N!0J!*!6"!#3(NM!!3-!N!A`!*!$B!#3%`3!N"jNFJ)%!!%!N!2X!*!
- X$B!#3%`3!N"m#!3-!!J#3!qJ!N!0J!*!6"!#3(Q4b!3-!!`#3!q3!N!0J!*!6"!#
- X3(Lf-!3-!"3#3!q!!N!0J!*!6"!#3(L!)!3-!"!!!"c!!N!-+!*!Eh%*i#NUGcNk
- Xk!&41ZJ"Q,$a*6N4B6VS&ENIkrmSQM%IkrmJQK%kk!'C1ZJ+S6VS'*Nkk!0a1ZJ#
- XS3QG)H2rr5'm!"%KA2c`!!5)krl*1ZJ1#6V83!#"Y!'a1N!#Tp&(i#Pjq!%kk![T
- XR#%U3!'F%#0!!"Nje)$J+H'B-,$aD6dj&6VS&"#!-4rVrCLD!6R9CMbmm4%&838*
- XRUD!J9b"3)RJ*##!0N!#*4rVr6LD!S#kTSb`m8e458dkk"-j(q[mf*S`X2%4548a
- X1ZJ5q)%`J"'F-6VS"YJ5!!*!$$'Ed6[S&DNj@rpT"q!N3)Np`)+!ZF!(3%9S4dX"
- X"qJ!5F!@J,P@25'm!!UQA6Pj1G5jbFh*M!%Ik"HiQZ!Tm,cJ+J'B#@)p1G8MRrrJ
- Xq,`!m8IJ+AQ!+@Bm[#+QP)"qJ3%kk!L4R4%IkrVJQL#!3CqBL3%U4CLi!%!$!,$a
- X$8N9-6VS%,'FN2Lm!2#"-)!4R$%kk!(J%J!#3!`aQp%kk"0"1ZJ'F60mIrdjeF!q
- XTb8kk"Aa1ZJ!)6VS%p%je)(J+l+!P)&!L5#)BB!T"k!!)G!'%'0$#8FRrp*!!L0#
- X*CJ*1G5)!S#iJH!VX)!'J*#*36qrr`#"23UJ!%M&T!!3!&U!93UG)D3!-)%qTmM)
- XB6VS"RL4BeF%d'#)BEM*R&P*"C`C53@FD6R8b+2rd6VS"Z0056R8b+2rd6VS"L00
- X56R8b+2rd6VS"MY1Urrj1G8kk!8ib+3!-5QN!#QBF9%*U$("MUFP53QEide*1G8k
- Xk!965U3!1de*1G8kk!@c5U3!18N*Q"0056R9$p4!#[P&Qe!aK2caQcP*#CJB+DJ!
- XArrib)9K")RVpI0+4NNV68Nje-KK1ZJ%14I83!0AB0"KR-L)BEL4R$P*"CK3b+2r
- Xd6VS"&Q!B-LMrp%kk!1KJ$M)Srr41ZJ$`B!C1ZJ%3dSh6NNje)KK1ZJ%%de*1G5"
- Xkr4!J1[d35UJ!!'FS-LJ!+'FL*#J!'&P#3qd!%02S!!69@6,m2ca#'4,S!$dbr+R
- X`88&Ql%(S!%!%J!#3!d"QaNje)(Vmc#!kr-abrh3!5UJ!!'FB[LJ!2@B50LJ!+'F
- X-e%1bU!!%C33L+!!%3HJ!3!5!!*!$3'E@)(VmUL"3"%%!%$$"jNS``Nje@Bm[2%0
- X24%8r"kQJ)&p3q!TH)!K1G5Kkr(BLG"J!Nq`!102-6R8SH[aH`[`!3#)d'"JSH[a
- XQdT41G5Kkr%V#r!"!)M3B#*+kr%j1G5Kkr$M#r!"!)M3B%0+kr$K1G5Kkr#E#r!"
- X!)M3B"!D"!*!$%%je6VVrSM)T!!a+D3!+CJC1Z[qiB!41Z[r@dUN!$Nje)&mb'$3
- XBX&KAbIrk5N*RrNl`)2`JAc)B0"L`Q&I*rrT+3QIq6[!JqL"I-KJd',"#EJU3!%&
- XY"Y"!3I!!!M!3Crj1m!!!)#m!"#p"!!3L,`!),em!"%MR2!!N!#B"5%,%`bJ!+J&
- X)4FM&e%4)3T!$`-(3JNcI!$`L(dje)#m!"#p"!!3L,`!),em!"%MR-3"1ZJ#F60m
- X!M#)I6R8J,`!%,d%!"#)[!!J[A`!%51Fa!%kk!(`J!8cI!)`L(dje)#m!"#p"!!3
- XL,`!),em!"%MR-3"1ZJ!X60m!M#)I6R8J,`!%,d%!"#)[!!J[A`!%51Fa!%kk!!`
- XJ!8cI!)`L(dje5S"U(%U"DJa%J%5"6VS!)%5"6R9%J%kk!"C%J%5"6R9+J@S+4)&
- X1ZJ!'4)"1G5im!!$rrl+!B`BL!(!!6R@`Kf)-J-&)3$)!3N")3%jeXSGL'Li!3N"
- X)3)$"5%")4ci!5%H1`6!(5%Fb"dje*!!Q!H+)iSQbKf,iJ-(!Kc)$`X!Z!dK(cX"
- X)4p+(C3L5JQ)%4)&1G90!B14q!&(i#PjCMbm'2`HTS#!IC`!!VLC!@Bm[#kQP*Km
- XJ#bJ$8NI[4e*(1JGJ&PQ2,`Br"kQJ)"pR!!#)8NF'K!!!Irj9Mbm!UDB`(`J!!!9
- XQh&$i#Pl24CT(CK`J!k"!,`ZTSL!6C`!!@Lm,UC)S8b",S#P`!8je)!5K(L!)C`!
- X!3LK),`ZTSL!6C`!!0L",)!0J'&Q2,`Br"kQJ)"pR!!!L8NFJ3#!m!!"rrLm))&!
- XL60R!S#kTSe(0rpUCa#C-F!&1G5",5N9Q"+!M6R@J(dje-MbTm%2kqXC1ZJ"S-Mb
- XTmN2kqbK1ZJ"F-MbTmd2kqaa1ZJ"3-MbTp%2kq`K1qJ"%,`JJE`!),fJ!!J!))(J
- X#TR!-d*!!X,J#UQBN6VS!C$)mUI"1ZJ"%-MbTmNkk!$`b2+Rc6VS!0$)mUI41ZJ!
- XX)&p1G6!"S8BN5(!-5RJ#MQS%T4jJ!U%H-!'J4c$m6VNJb6$m6[NJbNje-!'K4L*
- XS!!LJ(c!")%QJ4dje!*!%6R8J1[riC`3J3%+3!%je!!!"!*!$0IS!!$6k!!!"QJ!
- XNEb!$8!#3!a`"NJ!15%&65!#3!hTD6dj&!*!$KNY*6N3!N!159da23`#3!jj*6N4
- XB!*!$UN024%8!!`#f4%&833#3!qC69&*6!*!$mN4548`!N!2q8eP08`!!!3T$6NC
- X(!!!"&P0*@N8!!!%L3e*&6!!"!5j%3P9(!!%"4PK6@8d!!3&H!!%!N!FQl%`!!2r
- Xr!!!(IJ!Ql0J!!2rr!!!$p!!QlG!!!2rr!!!(A!!Ql(3!!2rr!!!VJJ!QlD`!!2r
- Xr!!!&AJ!QlI`!!rrr!!!&`J#3"36rr`!!"FS!N!8"rrm8!#h'!#EYi!!!rrm!!!A
- X5!#EXh!!!rrm!!!A@!#EXY!!!rrm!!!AD!#EYe!!!rrm!!!AH!#EXe!!#rrm!!!G
- X`!#EXl2rr!!B!!!93!#EYj!!$rrm!!!AL!*!&"2rr!!!&jJ#3"32rr`!!"HS!N!8
- X%rrm!!!AZ!*!&!rrr!!!&mJ#3"36rr`!!"IB!N!3&E@YKD'`"-N@Q!:
- END_OF_FILE
- if test 17003 -ne `wc -c <'mac/MD.proj.hqx'`; then
- echo shar: \"'mac/MD.proj.hqx'\" unpacked with wrong size!
- fi
- # end of 'mac/MD.proj.hqx'
- fi
- if test -f 'others/exesmurf.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'others/exesmurf.c'\"
- else
- echo shar: Extracting \"'others/exesmurf.c'\" \(5158 characters\)
- sed "s/^X//" >'others/exesmurf.c' <<'END_OF_FILE'
- X/******************************************************************************
- X* *
- X* EXE header list and modify *
- X* *
- X* by Pierre Martineau, 90/05/20 *
- X* *
- X* Version 1.1 *
- X* *
- X* Placed in the public domain *
- X* *
- X******************************************************************************/
- X
- X#include <string.h>
- X#include <stdlib.h>
- X#include <stdio.h>
- X#include <math.h>
- X
- X#define BOOLEAN int
- X#define TRUE 1
- X#define FALSE 0
- X
- XFILE *wrkfile;
- Xlong min, max, stk;
- XBOOLEAN listflg = FALSE;
- XBOOLEAN minflg = FALSE;
- XBOOLEAN maxflg = FALSE;
- XBOOLEAN stkflg = FALSE;
- X
- Xstruct exehdr {
- Xunsigned signature;
- Xunsigned mod512;
- Xunsigned pages;
- Xunsigned relocitems;
- Xunsigned headerparas;
- Xunsigned minalloc;
- Xunsigned maxalloc;
- Xunsigned ss;
- Xunsigned sp;
- Xunsigned checksum;
- Xunsigned ip;
- Xunsigned cs;
- Xunsigned relocptr;
- Xunsigned ovlnum;
- X} exehdr_area;
- X
- Xmain(argc, argv)
- Xint argc;
- Xchar *argv[];
- X{
- Xchar *dot, *slash;
- Xchar fname[128];
- Xchar *args;
- Xint i;
- Xlong offset, oldstk;
- X
- X printf("EXE list and modify V1.1, by Pierre Martineau, 90/05/20.\n");
- X printf("This program is public domain and may be freely distributed.\n");
- X
- X if ((argc < 2) || (argc > 6)) {
- X usage();
- X return;
- X }
- X
- X/* Extract filename from first argumemt */
- X
- X strcpy(fname, argv[1]);
- X dot = strrchr(fname, '.');
- X slash = strrchr(fname, '\\');
- X if ((dot == NULL) || (slash > dot))
- X strcat(fname, ".exe");
- X
- X if ((wrkfile = fopen(fname, "r+b")) == NULL) {
- X printf("\nCouldn't open file %s\n", fname);
- X return;
- X }
- X
- X/* Process any remaining arguments */
- X
- X if (argc == 2)
- X listflg = TRUE;
- X else {
- X i = 2;
- X while (argc-- > 2) {
- X args = argv[i];
- X if ((args[0] != '-') && (args[0] != '/')) {
- X printf("\nInvalid switch in paramater %s!\n", argv[i]);
- X usage();
- X return;
- X }
- X args++;
- X if (strnicmp(args, "min", 3) == 0) {
- X args += 3;
- X min = atol(args);
- X minflg = TRUE;
- X }
- X else if (strnicmp(args, "max", 3) == 0) {
- X args += 3;
- X max = atol(args);
- X maxflg = TRUE;
- X }
- X else if (strnicmp(args, "stk", 3) == 0) {
- X args += 3;
- X stk = atol(args);
- X stkflg = TRUE;
- X }
- X else if (strnicmp(args, "v", 1) == 0)
- X listflg = TRUE;
- X else {
- X printf("\nInvalid paramater %s!\n", argv[i]);
- X usage();
- X return;
- X }
- X i++;
- X }
- X }
- X
- X fread(&exehdr_area, sizeof (struct exehdr), 1, wrkfile);
- X if (exehdr_area.signature != 0x5a4d) {
- X printf("\nNot an EXE file!\n");
- X return;
- X }
- X while(!feof(wrkfile)) {
- X if (listflg)
- X show_hdr();
- X if ((minflg || maxflg || stkflg) && (exehdr_area.ovlnum == 0) && (exehdr_area.signature == 0x5a4d)) {
- X if (minflg)
- X exehdr_area.minalloc = min;
- X if (maxflg)
- X exehdr_area.maxalloc = max;
- X if (stkflg) {
- X oldstk = exehdr_area.sp;
- X exehdr_area.sp = stk;
- X if (!minflg) {
- X exehdr_area.minalloc += ((stk - oldstk) / 16);
- X printf("\nAdjusting size of minalloc!\n");
- X }
- X }
- X fseek(wrkfile, ftell(wrkfile) - sizeof (struct exehdr), SEEK_SET);
- X fwrite(&exehdr_area, sizeof (struct exehdr), 1, wrkfile);
- X if (ferror(wrkfile)) {
- X printf("Write error while trying to update header!\n");
- X fclose(wrkfile);
- X return;
- X }
- X }
- X offset = exehdr_area.pages;
- X offset *= 512L;
- X offset -= sizeof(struct exehdr);
- X fseek(wrkfile, offset, SEEK_CUR);
- X fread(&exehdr_area, sizeof (struct exehdr), 1, wrkfile);
- X if (ferror(wrkfile)) {
- X printf("Read error while trying to get a header!\n");
- X fclose(wrkfile);
- X return;
- X }
- X }
- X fclose(wrkfile);
- X}
- X
- Xshow_hdr()
- X{
- Xlong lsize;
- X
- X lsize = exehdr_area.pages;
- X if (exehdr_area.mod512 != 0)
- X lsize--;
- X lsize *= 512L;
- X lsize += exehdr_area.minalloc * 16;
- X lsize += exehdr_area.mod512;
- X lsize -= exehdr_area.headerparas * 16;
- X
- X printf("\nOverlay: %d\n", exehdr_area.ovlnum);
- X printf("--------\n");
- X printf("Size (512 byte pages)\t-%6x\t\t%6u\n", exehdr_area.pages, exehdr_area.pages);
- X printf("Remainder (last page)\t-%6x\t\t%6u\n", exehdr_area.mod512, exehdr_area.mod512);
- X printf("Header size (in paras)\t-%6x\t\t%6u\n", exehdr_area.headerparas, exehdr_area.headerparas);
- X printf("Minalloc (in paras)\t-%6x\t\t%6u\n", exehdr_area.minalloc, exehdr_area.minalloc);
- X printf("Maxalloc (in paras)\t-%6x\t\t%6u\n", exehdr_area.maxalloc, exehdr_area.maxalloc);
- X printf("Load size (in bytes)\t-%6lx\t\t%6lu\n", lsize, lsize);
- X printf("Relocation items\t-%6x\t\t%6u\n", exehdr_area.relocitems, exehdr_area.relocitems);
- X printf("Relocation table offset\t-%6x\t\t%6u\n", exehdr_area.relocptr, exehdr_area.relocptr);
- X printf("Checksum\t\t-%6x\t\t%6u\n", exehdr_area.checksum, exehdr_area.checksum);
- X printf("Initial CS:IP\t\t- %04x:%04x\n", exehdr_area.cs, exehdr_area.ip);
- X printf("Initial SS:SP\t\t- %04x:%04x\n", exehdr_area.ss, exehdr_area.sp);
- X}
- X
- Xusage()
- X{
- X printf("\nUsage: exesmurf exe_file [/v] [/min#####] [/max#####] [/stk#####]\n");
- X printf(" where: min = minalloc\n");
- X printf(" max = maxalloc\n");
- X printf(" stk = stack size\n");
- X printf(" ##### = decimal number of paragraphs.\n");
- X}
- END_OF_FILE
- if test 5158 -ne `wc -c <'others/exesmurf.c'`; then
- echo shar: \"'others/exesmurf.c'\" unpacked with wrong size!
- fi
- # end of 'others/exesmurf.c'
- fi
- echo shar: End of archive 19 \(of 24\).
- cp /dev/null ark19isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 24 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-